Some embodiments described herein relate generally to methods and apparatus for scheduling transmission of data in a computer network. In particular, but not by way of limitation, some of the embodiments described herein relate to methods and apparatus for speculatively shaping the transmission of data to reduce the data burst sizes in a scheduling system associated with a network.
Data scheduling systems (or modules) in high speed networks (e.g., 100 Gbps networks) can typically scale to large sizes with, for example, 1M (where M=1×106) buffers that can cause certain data structures to be placed in external (off-chip) memory. In such instances, large memory latency can affect the speed with which the data scheduling system can respond to changes in the number of transmission credits assigned to the different network devices in the network. This can affect the number of data units that are transmitted to a network device in excess of the pre-determined transmission credit limits assigned for each network device and/or a queue in the network.
It is desirable for a transmission data scheduler in high-speed networks to deduct a byte length of the data units scheduled for transmission to the network device from the transmission credit queue associated with that network device prior to scheduling additional data units to be sent to the network device. Such a sequence allows the transmission data scheduler to suspend scheduling of further data units if the data units scheduled to the network device and/or the queue has exceeded the transmission credit value associated with that queue and/or network device. This, however, presents memory latency issues. If, however, the transmission data scheduler schedules multiple data units to be sent to the network device prior to deducting the transmission credits, a greater number of data units than allowed by the transmission credit queue may be scheduled, adversely affecting data traffic.
Accordingly, a need exists for methods and apparatus for dynamically scheduling transmission of data units in a network by speculatively shaping the transmission of data units to reduce the data unit burst sizes associated with a hierarchical network.